package net.homelinux.chaoswg.io.renga.krypto.datatypes.numerical;

import java.math.BigInteger;

public class Unsigned64Bit extends UnsignedNBit  {
    public final static BigInteger MAX = new BigInteger("18446744073709551615");
    public final static BigInteger MOD = new BigInteger("18446744073709551616");
    public final static int n = 64;

    public Unsigned64Bit () {
        initRanges ();
    }
    
    public Unsigned64Bit (final BigInteger val) {
        initRanges ();

        if (val.compareTo(MIN) < 0 || val.compareTo(MAX) > 0) {
            throw new IllegalArgumentException ();
        } else {
            this.value = val;
        }
    }
    
    public Unsigned64Bit (final Unsigned64Bit u64b) {
        initRanges ();

        this.value = new BigInteger (u64b.value.toByteArray());
    }
    
    private void initRanges () {
    }
    
    public BigInteger getMAX () {
        return MAX; 
    }
    
    public BigInteger getMOD () {
        return MOD;
    }
    
    public int getN () {
        return n;
    }
}